<?php

namespace Portal\InvoiceBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Subject
 *
 * @ORM\Table(name="subject")
 * @ORM\Entity
 */
class Subject
{
    /**
     * @var integer
     *
     * @ORM\Column(name="ID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="NAME", type="string", length=128, nullable=true)
     */
    private $name;

    /**
     * @var string
     *
     * @ORM\Column(name="DESCRIPTION", type="string", length=512, nullable=true)
     */
    private $description;

    /**
     * @var boolean
     *
     * @ORM\Column(name="IS_ACTIVE", type="boolean", nullable=true)
     */
    private $isActive;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="CREATED_AT", type="date", nullable=true)
     */
    private $createdAt;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="UPDATED_AT", type="datetime", nullable=true)
     */
    private $updatedAt;

    /**
     * @var integer
     *
     * @ORM\Column(name="CREATED_USER_ID", type="integer", nullable=true)
     */
    private $createdUserId;

    /**
     * @var float
     *
     * @ORM\Column(name="MIN_FEE", type="float", nullable=true)
     */
    private $minFee;

    /**
     * @var string
     *
     * @ORM\Column(name="FEE_CURRENCY", type="string", length=3, nullable=false)
     */
    private $feeCurrency;

    /**
     * @var \SubjectCategory
     *
     * @ORM\ManyToOne(targetEntity="SubjectCategory")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="CATEGORY_ID", referencedColumnName="ID")
     * })
     */
    private $category;



    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     * @return Subject
     */
    public function setName($name)
    {
        $this->name = $name;
    
        return $this;
    }

    /**
     * Get name
     *
     * @return string 
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set description
     *
     * @param string $description
     * @return Subject
     */
    public function setDescription($description)
    {
        $this->description = $description;
    
        return $this;
    }

    /**
     * Get description
     *
     * @return string 
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set isActive
     *
     * @param boolean $isActive
     * @return Subject
     */
    public function setIsActive($isActive)
    {
        $this->isActive = $isActive;
    
        return $this;
    }

    /**
     * Get isActive
     *
     * @return boolean 
     */
    public function getIsActive()
    {
        return $this->isActive;
    }

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     * @return Subject
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;
    
        return $this;
    }

    /**
     * Get createdAt
     *
     * @return \DateTime 
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * Set updatedAt
     *
     * @param \DateTime $updatedAt
     * @return Subject
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;
    
        return $this;
    }

    /**
     * Get updatedAt
     *
     * @return \DateTime 
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }

    /**
     * Set createdUserId
     *
     * @param integer $createdUserId
     * @return Subject
     */
    public function setCreatedUserId($createdUserId)
    {
        $this->createdUserId = $createdUserId;
    
        return $this;
    }

    /**
     * Get createdUserId
     *
     * @return integer 
     */
    public function getCreatedUserId()
    {
        return $this->createdUserId;
    }

    /**
     * Set minFee
     *
     * @param float $minFee
     * @return Subject
     */
    public function setMinFee($minFee)
    {
        $this->minFee = $minFee;
    
        return $this;
    }

    /**
     * Get minFee
     *
     * @return float 
     */
    public function getMinFee()
    {
        return $this->minFee;
    }

    /**
     * Set feeCurrency
     *
     * @param string $feeCurrency
     * @return Subject
     */
    public function setFeeCurrency($feeCurrency)
    {
        $this->feeCurrency = $feeCurrency;
    
        return $this;
    }

    /**
     * Get feeCurrency
     *
     * @return string 
     */
    public function getFeeCurrency()
    {
        return $this->feeCurrency;
    }

    /**
     * Set category
     *
     * @param \Portal\InvoiceBundle\Entity\SubjectCategory $category
     * @return Subject
     */
    public function setCategory(\Portal\InvoiceBundle\Entity\SubjectCategory $category = null)
    {
        $this->category = $category;
    
        return $this;
    }

    /**
     * Get category
     *
     * @return \Portal\InvoiceBundle\Entity\SubjectCategory 
     */
    public function getCategory()
    {
        return $this->category;
    }
}